package com.sojson.entity.po;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;

import com.sojson.base.impl.BaseDto;
import com.sojson.enums.core.EGeneralStatus;
import com.sojson.util.DateUtil;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiModelProperty.AccessMode;

/**
 * 商品规格组合表Bean
 * 
 * @author liu
 * @date 2021-03-22
 */
@ApiModel("商品规格组合表Bean")
public class GoodSpecs extends BaseDto {

    /**
     * 此文件由工具自动生成，手动添加内容请放至末尾
     */

    private static final long serialVersionUID = 1616394721834L;

    @ApiModelProperty("规格名称")
    private String name;
    @ApiModelProperty("所属商品id")
    private Integer goodId;
    @ApiModelProperty("商品规格id逗号拼接")
    private String specsListIds;
    @ApiModelProperty("缩略图")
    private String thumb;
    @ApiModelProperty("类型 1仅购买 2仅租赁 3购买加租赁")
    private Integer type;
    @ApiModelProperty("单价")
    private BigDecimal price;
    @ApiModelProperty("原价")
    private BigDecimal originalPrice;
    @ApiModelProperty("库存")
    private Integer stock;
    @ApiModelProperty("单价/每天")
    private BigDecimal priceDay;
    @ApiModelProperty("起租天数")
    private Integer rentDays;
    @ApiModelProperty("保证金")
    private BigDecimal deposit;
    @ApiModelProperty("分成金额")
    private BigDecimal percentageTotal;
    @ApiModelProperty("租赁第一次分成金额")
    private BigDecimal percentageTotalFirst;
    @ApiModelProperty("重量：克 备用字段")
    private Double weight;
    @ApiModelProperty("单位，备用字段")
    private String goodUnit;
    @ApiModelProperty("状态 1启用 2禁用")
    private Integer status;
    @ApiModelProperty("创建时间")
    private Date createdAt;
    @ApiModelProperty("更新时间")
    private Date updatedAt;
    @ApiModelProperty(value = "商品规格详细集合", accessMode = AccessMode.READ_ONLY)
    private ArrayList<SpecsAttr> specsAttrs;
    /** 商品规格组合表集合 */
    private ArrayList<Integer> ids;
    /** 商品规格组合表集合 */
    private ArrayList<GoodSpecs> goodSpecss;

    /**
     * 以上由工具自动生成，以下为手动添加
     */

       /**
        * Empty constructor
        */
    public GoodSpecs() {

    }

    /**
     * 此文件由工具自动生成，手动添加内容请放至末尾
     */

    /**
     * 获取规格名称
     * 
     * @return
     */
    public String getName() {
        return name;
    }

    /**
     * 设置规格名称
     * 
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取 所属商品id
     */
    public Integer getGoodId() {
        return goodId;
    }

    /**
     * 设置 所属商品id
     */
    public void setGoodId(Integer goodId) {
        this.goodId = goodId;
    }

    /**
     * 获取 商品规格id逗号拼接
     */
    public String getSpecsListIds() {
        return specsListIds;
    }

    /**
     * 设置 商品规格id逗号拼接
     */
    public void setSpecsListIds(String specsListIds) {
        this.specsListIds = specsListIds;
    }

    /**
     * 获取 缩略图
     */
    public String getThumb() {
        return thumb;
    }

    /**
     * 设置 缩略图
     */
    public void setThumb(String thumb) {
        this.thumb = thumb;
    }

    /**
     * 获取类型 1仅购买 2仅租赁 3购买加租赁
     * 
     * @return
     */
    public Integer getType() {
        return type;
    }

    /**
     * 设置类型 1仅购买 2仅租赁 3购买加租赁
     * 
     * @param type
     */
    public void setType(Integer type) {
        this.type = type;
    }

    /**
     * 获取 单价
     */
    public BigDecimal getPrice() {
        return price;
    }

    /**
     * 设置 单价
     */
    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    /**
     * 获取 原价
     */
    public BigDecimal getOriginalPrice() {
        return originalPrice;
    }

    /**
     * 设置 原价
     */
    public void setOriginalPrice(BigDecimal originalPrice) {
        this.originalPrice = originalPrice;
    }

    /**
     * 获取 库存
     */
    public Integer getStock() {
        return stock;
    }

    /**
     * 设置 库存
     */
    public void setStock(Integer stock) {
        this.stock = stock;
    }

    /**
     * 获取单价/每天
     * 
     * @return
     */
    public BigDecimal getPriceDay() {
        return priceDay;
    }

    /**
     * 设置单价/每天
     * 
     * @param priceDay
     */
    public void setPriceDay(BigDecimal priceDay) {
        this.priceDay = priceDay;
    }

    /**
     * 获取起租天数
     * 
     * @return
     */
    public Integer getRentDays() {
        return rentDays;
    }

    /**
     * 设置起租天数
     * 
     * @param rentDays
     */
    public void setRentDays(Integer rentDays) {
        this.rentDays = rentDays;
    }

    /**
     * 获取 保证金
     */
    public BigDecimal getDeposit() {
        return deposit;
    }

    /**
     * 设置 保证金
     */
    public void setDeposit(BigDecimal deposit) {
        this.deposit = deposit;
    }

    /**
     * 获取 分成金额
     */
    public BigDecimal getPercentageTotal() {
        return percentageTotal;
    }

    /**
     * 设置 分成金额
     */
    public void setPercentageTotal(BigDecimal percentageTotal) {
        this.percentageTotal = percentageTotal;
    }

    /**
     * 获取租赁第一次分成金额
     * 
     * @return
     */
    public BigDecimal getPercentageTotalFirst() {
        return percentageTotalFirst;
    }

    /**
     * 设置租赁第一次分成金额
     * 
     * @param percentageTotalFirst
     */
    public void setPercentageTotalFirst(BigDecimal percentageTotalFirst) {
        this.percentageTotalFirst = percentageTotalFirst;
    }

    /**
     * 获取 重量：克 备用字段
     */
    public Double getWeight() {
        return weight;
    }

    /**
     * 设置 重量：克 备用字段
     */
    public void setWeight(Double weight) {
        this.weight = weight;
    }

    /**
     * 获取 单位，备用字段
     */
    public String getGoodUnit() {
        return goodUnit;
    }

    /**
     * 设置 单位，备用字段
     */
    public void setGoodUnit(String goodUnit) {
        this.goodUnit = goodUnit;
    }

    /**
     * 获取 状态 1启用 2禁用
     */
    public Integer getStatus() {
        return status;
    }

    /**
     * 设置 状态 1启用 2禁用
     */
    public void setStatus(Integer status) {
        this.status = status;
    }

    /**
     * 获取 创建时间
     */
    public Date getCreatedAt() {
        return createdAt;
    }

    /**
     * 设置 创建时间
     */
    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    /**
     * 获取 更新时间
     */
    public Date getUpdatedAt() {
        return updatedAt;
    }

    /**
     * 设置 更新时间
     */
    public void setUpdatedAt(Date updatedAt) {
        this.updatedAt = updatedAt;
    }

    /**
     * 获取 商品规格组合表集合
     */
    public ArrayList<Integer> getIds() {
        return ids;
    }

    /**
     * 设置 商品规格组合表集合
     */
    public void setIds(ArrayList<Integer> ids) {
        this.ids = ids;
    }

    /**
     * 获取 商品规格组合表集合
     */
    public ArrayList<GoodSpecs> getGoodSpecss() {
        return goodSpecss;
    }

    /**
     * 设置 商品规格组合表集合
     */
    public void setGoodSpecss(ArrayList<GoodSpecs> goodSpecss) {
        this.goodSpecss = goodSpecss;
    }

    /**
     * 以上由工具自动生成，以下为手动添加
     */

    /**
     * 获取商品规格详细集合
     * 
     * @return
     */
    public ArrayList<SpecsAttr> getSpecsAttrs() {
        return specsAttrs;
    }

    /**
     * 设置商品规格详细集合
     * 
     * @param specsAttrs
     */
    public void setSpecsAttrs(ArrayList<SpecsAttr> specsAttrs) {
        this.specsAttrs = specsAttrs;
    }

    /**
     * 插入初始化
     */
    public void insertInit() {
        setStatus(EGeneralStatus.NORMAL.getCode());
        Date now = DateUtil.nowDate();
        setCreatedAt(now);
        setUpdatedAt(now);
    }

    /**
     * 更新初始化
     */
    public void updateInit() {
        Date now = DateUtil.nowDate();
        setUpdatedAt(now);
    }

    /**
     * 更新初始化
     */
    public void setUpdateNull() {
        setStatus(null);
        setGoodId(null);
        setSpecsListIds(null);
        setStock(null);
    }

}